# 1、在测试视频(OpenCV安装目录\sources\samples\data)上，使用基于混合高斯模型的背景提取算法，
# 提取前景并显示(显示二值化图像，前景为白色)。
import cv2 as cv

videoFileName = r"D:\AI\Picture\vtest.avi"
# 加载视频
cap = cv.VideoCapture(videoFileName)
# 创建混合高斯模型的背景前景分割算法对象
fgbg = cv.createBackgroundSubtractorMOG2()
thresh = 200

while True:
    # ret表示是否成功获取帧, frame是捕获到的图像
    ret, frame = cap.read()
    if not ret:
        break
    # 获取前景的蒙板
    fgmask = fgbg.apply(frame)

    # 固定阈值二值化，对前景蒙版阈值化去除噪声
    ret, fgmask = cv.threshold(fgmask, 30, 0xff, cv.THRESH_BINARY)

    cv.imshow("source", frame)
    cv.imshow("fgImage", fgmask)

    # 每一帧间隔30ms
    key = cv.waitKey(30)
    # 按下ESC键(27)，退出
    if key == 27:
        break

# 释放视频资源
cap.release()
# 关闭所有窗口
cv.destroyAllWindows()
